package LiKou;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: H_tao_X
 * Date: 2022-12-15
 * Time: 14:08
 */
public class _167_twoNumII {
    public static void main(String[] args) {

    }


    /**
     * 力扣：167   O(N)
     * 两数之和，输入的数组是 有序 数组--- 》 有序数组 考虑 二分查找
     * 且 下标值 是从 1开始，而不是 0，不可以重复使用相同的元素
     * 意思 我们最后的下标值结果 需要 + 1
     *  输入 ：nums[2,7,11,15] target = 9
     *  输出 ：[1,2]
     *  解释：2 + 7 = 9，因此 index1 = 1，index2 = 2
     */

    // 双指针
        // 因为是有序的，所以我们采用双指针，头和尾相加
        // 分三种情况：大于 小于 或者 等于 target
    public int[] twoSum(int[] numbers, int target) {
        // 判空
        if(numbers == numbers || numbers.length == 0){
            return new int[0];
        }
        int left = 0;
        int right = numbers.length-1;
        while (left < right) {
            int sum = numbers[left] + numbers[right];
            // 找到了
            if(numbers[left] + numbers[right] == target) {
                return new int[]{left+1,right+1};
            }else if(sum < target){
                left++;
            }else {
                right--;
            }
        }
        return new int[0];
    }






}
